import React from "react";
import Options from "./Options";
import AreaOptions from "./AreaOptions";
import AvatarOptions from "./AvatarOptions";
import CheckboxOptions from "./CheckboxOptions";
import FilesOptions from "./FilesOptions";
import LocationOptions from "./LocationOptions";
import RelationSingleOptions from "./RelationSingleOptions";
import RelationMultipleOptions from "./RelationMultipleOptions";
import RelationFieldsOptions from "./RelationFieldsOptions";
import DepartmentOptions from "./DepartmentOptions";

export default function CellControls(props) {
  const { control, value } = props;

  // 根据 control.type 返回不同的组件
  switch (control.type) {
    case 9: // 单选
    case 10: // 多选
    case 11: // 下拉框
      return <Options {...props} />;

    case 14: // 附件
      return <FilesOptions {...props} />;

    case 19: // 地区
    case 23:
    case 24:
      return <AreaOptions {...props} />;

    case 26: // 成员
      return <AvatarOptions {...props} />;
    case 27: // 部门
      return <DepartmentOptions {...props} />;
    case 29: // 子表/关联字段
      //  1 单条关联 2 多条关联
      if (control.enumDefault == 1) {
        return <RelationSingleOptions {...props} />;
      } else if (control.enumDefault == 2) {
        return <RelationMultipleOptions {...props} />;
      } else {
        return <RelationFieldsOptions {...props} />;
      }
    case 30: // 他表字段
      //单选 多选 下拉
      if ([11, 10, 9].includes(control.sourceControl.type)) {
        return <Options {...props} />;
        //文件
      } else if ([14].includes(control.sourceControl.type)) {
        return <FilesOptions {...props} />;
        //地区
      } else if ([19, 23, 24].includes(control.sourceControl.type)) {
        return <AreaOptions {...props} />;
      }
      //成员
      else if ([26].includes(control.sourceControl.type)) {
        return <AvatarOptions {...props} />;
      }
      //部门
      else if ([27].includes(control.sourceControl.type)) {
        return <DepartmentOptions {...props} />;
      } // 勾选框
      else if ([36].includes(control.sourceControl.type)) {
        return <CheckboxOptions {...props} />;
      } // 定位
      else if ([40].includes(control.sourceControl.type)) {
        return <LocationOptions {...props} />;
      } else {
        return <RelationFieldsOptions {...props} />;
      }
    case 36: // 勾选框
      return <CheckboxOptions {...props} />;

    case 40: // 定位
      return <LocationOptions {...props} />;

    default: // 其他情况直接返回 value
      return <div title={value || ""}> {value || ""}</div>;
  }
}
